#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include "01_lib.h"
sqlink CreateList(void)
{
	sqlink l = (sqlink)realloc(NULL,sizeof(sqlist));
	l->last = -1;
	memset(l->data,0,MAX);
	return l;
}
int Length(sqlink L)
{
	return L->last + 1;
}
void ClearList(sqlink L)
{
	free(L);
}
int EmptyList(sqlink L)
{
	return L->last == -1;
}
int FullList(sqlink L)
{
	return L->last == (MAX - 1);
}
int GetList(sqlink L,int index)
{
	if(index >= 1 || index <= (L->last + 1))
	{
		return L->data[index - 1];
	}
	return -1;
}
int LocateList(sqlink L,int value)
{
	if(EmptyList(L))
	{
		return -1;
	}
	for(int i = 0;i <= L->last;i++)
	{
		if(L->data[i] == value)
		{
			return i + 1;
		}
	}
	return -1;
}
void InsertList(sqlink L,int value,int index)
{
	if(EmptyList(L) || FullList(L) || index - 1 > L->last)
	{
		return;
	}
	for(int i = index - 1;i <= L->last;i++)
	{
		L->data[i + 1] = L->data[i];
	}
	L->data[index - 1] = value;
	L->last++;
}
void DeleteList(sqlink L,int index)
{
	if(EmptyList(L) || FullList(L) || index - 1 > L->last)
	{
		return;
	}
	for(int i = index - 1;i < L->last;i++)
	{
		L->data[i] = L->data[i + 1];
	}
	L->last--;
}
void PushList(sqlink L,int value)
{
	if(FullList(L))
	{
		return;
	}
	L->data[++L->last] = value;

}
void PrintList(sqlink L)
{
	for(int i = 0;i <= L->last;i++)
	{
		printf("data[%d] = %d\n",i,L->data[i]);
	}
}
